package cn.dengta.webapp.trade.model;

import cn.dengta.common.model.VerifyStatus;
import lombok.Getter;

@Getter
public enum AuditLevel {
	/** 初审 */
	VERIFY("初审"),
	/** 复审 */
	REVIEW("复审"),
	/** 直接通过 */
	PASS("直接通过");

	private final String label;

	AuditLevel(String label) {
		this.label = label;
	}

	/** 可取消 */
	public boolean canCancel(Integer status) {
		return isVerify() && VerifyStatus.WAIT_VERIFY.eq(status);
	}

	public boolean isVerify() {
		return this == VERIFY;
	}

	public boolean isReview() {
		return this == REVIEW;
	}

	public boolean isPass() {
		return this == PASS;
	}

	/** 可初审 */
	public boolean canVerify(Integer status) {
		return isVerify() && VerifyStatus.WAIT_VERIFY.eq(status);
	}

	/** 可复审 */
	public boolean canReview(Integer status) {
		return isReview() && VerifyStatus.VERIFY_TRUE.eq(status);
	}

	/** 校验权限 */
	public boolean checkValidate(Integer status) {
		return canVerify(status) || canReview(status);
	}

	public Integer convertStatus(boolean yesOrNo) {
		return isVerify() ? VerifyStatus.ofVerify(yesOrNo).value : VerifyStatus.ofReview(yesOrNo).value;
	}
}
